package com.yunke.dto.vip;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import jakarta.validation.constraints.*;

/**
 * VIP购买DTO
 * 
 * @author yunke
 * @since 1.0.0
 */
@Data
@Schema(description = "VIP购买请求")
public class YunkeVipBuyDto {

    /**
     * VIP等级ID
     */
    @NotNull(message = "VIP等级ID不能为空")
    @Schema(description = "VIP等级ID", example = "1")
    private Long levelId;

    /**
     * 购买类型：1-月费 2-季费 3-年费
     */
    @NotNull(message = "购买类型不能为空")
    @Min(value = 1, message = "购买类型值不正确")
    @Max(value = 3, message = "购买类型值不正确")
    @Schema(description = "购买类型：1-月费 2-季费 3-年费", example = "1")
    private Integer buyType;

    /**
     * 支付方式：1-余额支付 2-微信支付 3-支付宝支付
     */
    @NotNull(message = "支付方式不能为空")
    @Min(value = 1, message = "支付方式值不正确")
    @Max(value = 3, message = "支付方式值不正确")
    @Schema(description = "支付方式：1-余额支付 2-微信支付 3-支付宝支付", example = "1")
    private Integer payMethod;

    /**
     * 优惠券代码
     */
    @Schema(description = "优惠券代码", example = "COUPON2024")
    private String couponCode;

    /**
     * 是否自动续费：0-否 1-是
     */
    @Schema(description = "是否自动续费", example = "0")
    private Integer isAutoRenew;

    /**
     * 备注信息
     */
    @Size(max = 200, message = "备注信息不能超过200个字符")
    @Schema(description = "备注信息", example = "购买VIP会员")
    private String remark;
} 